package com.fand.platform.authority.dao;

import java.util.List;
import java.util.Map;

import com.fand.dto.PaginationDto;
import com.fand.platform.authority.dto.NavigationDto;
import com.fand.platform.authority.dto.NavigationLaDto;
import com.fand.platform.authority.dto.NavigationLaLoDto;
import com.fand.platform.authority.dto.NavigationLoDto;

/**
 * 导航
 * 
 * @author yaoHT
 * 
 */
public interface NavigationDao {
	String BEAN_ID = "com.fand.platform.authority.dao.NavigationDao";

	/**
	 * 插入:导航
	 * 
	 * @param insertNavigation
	 *            导航对象
	 * 
	 * @param insertProperties
	 *            插入属性名集合
	 * 
	 * @return 影响行数
	 */
	int insertNavigationBy1(NavigationDto insertNavigation, String... insertProperties);

	/**
	 * 插入:导航
	 * 
	 * @param insertNavigation
	 *            导航对象
	 * 
	 * @return 影响行数
	 */
	int insertNavigationBy1_1(NavigationDto insertNavigation);

	/**
	 * 插入:导航
	 * 
	 * @param insertNavigation
	 *            导航对象
	 * 
	 * @return 影响行数
	 */
	int insertNavigationBy2(NavigationDto insertNavigation);

	/**
	 * 删除:导航
	 * 
	 * @param deleteNavigation
	 *            导航对象
	 * 
	 * @param whereEqProperties
	 *            条件为等于的属性名集合
	 * 
	 * @return 影响行数
	 */
	int deleteNavigationBy1(NavigationDto deleteNavigation, String... whereEqProperties);

	/**
	 * 删除:导航
	 * 
	 * @param deleteNavigation
	 *            导航对象
	 * 
	 * @return 影响行数
	 */
	int deleteNavigationBy1_1(NavigationDto deleteNavigation);

	/**
	 * 删除:导航
	 * 
	 * @param deleteNavigation
	 *            导航对象
	 * 
	 * @return 影响行数
	 */
	int deleteNavigationBy2(NavigationDto deleteNavigation);

	/**
	 * 更新:导航
	 * 
	 * @param updateNavigation
	 *            导航对象
	 * 
	 * @param updateProperties
	 *            更新的属性名集合
	 * 
	 * @param whereEqProperties
	 *            条件为等于的属性名集合
	 * 
	 * @return 影响行数
	 */
	int updateNavigationBy1(NavigationDto updateNavigation, String[] updateProperties, String... whereEqProperties);

	/**
	 * 更新:导航
	 * 
	 * @param updateNavigation
	 *            导航对象
	 * 
	 * @return 影响行数
	 */
	int updateNavigationBy1_1(NavigationDto updateNavigation);

	/**
	 * 更新:导航
	 * 
	 * @param updateNavigation
	 *            导航对象
	 * 
	 * @return 影响行数
	 */
	int updateNavigationBy2(NavigationDto updateNavigation);

	/**
	 * 查询:导航
	 * 
	 * @param requiredType
	 *            返回类型
	 * 
	 * @param selectNavigation
	 *            导航对象
	 * 
	 * @param objectId
	 *            返回对象标识
	 * 
	 * @param whereEqProperties
	 *            条件为等于的属性名集合
	 * 
	 * @return 返回对象
	 */
	<R> R selectNavigationBy1ForObject(Class<R> requiredType, NavigationDto selectNavigation, String objectId,
			String... whereEqProperties);

	/**
	 * 查询:导航
	 * 
	 * @param requiredType
	 *            返回类型
	 * 
	 * @param selectNavigation
	 *            导航对象
	 * 
	 * @param objectId
	 *            返回对象标识
	 * 
	 * @return 返回对象
	 */
	<R> R selectNavigationBy1_1ForObject(Class<R> requiredType, NavigationDto selectNavigation, String objectId);

	/**
	 * 查询:导航
	 * 
	 * @param requiredType
	 *            返回类型
	 * 
	 * @param selectNavigation
	 *            导航对象
	 * 
	 * @param objectId
	 *            返回对象标识
	 * 
	 * @return 返回对象
	 */
	<R> R selectNavigationBy2ForObject(Class<R> requiredType, NavigationDto selectNavigation, String objectId);

	/**
	 * 查询:导航
	 * 
	 * @param requiredType
	 *            返回类型
	 * 
	 * @param selectNavigation
	 *            导航对象
	 * 
	 * @param objectId
	 *            返回对象标识
	 * 
	 * @param whereEqProperties
	 *            条件为等于的属性名集合
	 * 
	 * @return 导航对象集合
	 */
	<R> List<R> selectNavigationBy1ForObjectList(Class<R> requiredType, NavigationDto selectNavigation,
			String objectId, String... whereEqProperties);

	/**
	 * 查询:导航
	 * 
	 * @param requiredType
	 *            返回类型
	 * 
	 * @param selectNavigation
	 *            导航对象
	 * 
	 * @param objectId
	 *            返回对象标识
	 * 
	 * @return 导航对象集合
	 */
	<R> List<R> selectNavigationBy1_1ForObjectList(Class<R> requiredType, NavigationDto selectNavigation,
			String objectId);

	/**
	 * 查询:导航
	 * 
	 * @param requiredType
	 *            返回类型
	 * 
	 * @param selectNavigation
	 *            导航对象
	 * 
	 * @param objectId
	 *            返回对象标识
	 * 
	 * @return 导航对象集合
	 */
	<R> List<R> selectNavigationBy2ForObjectList(Class<R> requiredType, NavigationDto selectNavigation,
			String objectId);

	/**
	 * 查询:导航
	 * 
	 * @param mappedClass
	 *            返回类型
	 * 
	 * @param selectNavigation
	 *            导航对象
	 * 
	 * @param selectProperties
	 *            查询的属性名集合
	 * 
	 * @param whereEqProperties
	 *            条件为等于的属性名集合
	 * 
	 * @return 返回对象
	 */
	<R> R selectNavigationBy1ForMappedObject(Class<R> mappedClass, NavigationDto selectNavigation,
			String[] selectProperties, String... whereEqProperties);

	/**
	 * 查询:导航
	 * 
	 * @param mappedClass
	 *            返回类型
	 * 
	 * @param selectNavigation
	 *            导航对象
	 * 
	 * @return 返回对象
	 */
	<R> R selectNavigationBy1_1ForMappedObject(Class<R> mappedClass, NavigationDto selectNavigation);

	/**
	 * 查询:导航
	 * 
	 * @param mappedClass
	 *            返回类型
	 * 
	 * @param selectNavigation
	 *            导航对象
	 * 
	 * @return 返回对象
	 */
	<R> R selectNavigationBy2ForMappedObject(Class<R> mappedClass, NavigationDto selectNavigation);

	/**
	 * 查询:导航
	 * 
	 * @param mappedClass
	 *            返回类型
	 * 
	 * @param selectNavigation
	 *            导航对象
	 * 
	 * @param selectProperties
	 *            查询的属性名集合
	 * 
	 * @param whereEqProperties
	 *            条件为等于的属性名集合
	 * 
	 * @return 导航对象集合
	 */
	<R> List<R> selectNavigationBy1ForMappedObjectList(Class<R> mappedClass, NavigationDto selectNavigation,
			String[] selectProperties, String... whereEqProperties);

	/**
	 * 查询:导航
	 * 
	 * @param mappedClass
	 *            返回类型
	 * 
	 * @param selectNavigation
	 *            导航对象
	 * 
	 * @return 导航对象集合
	 */
	<R> List<R> selectNavigationBy1_1ForMappedObjectList(Class<R> mappedClass, NavigationDto selectNavigation);

	/**
	 * 查询:导航
	 * 
	 * @param mappedClass
	 *            返回类型
	 * 
	 * @param selectNavigation
	 *            导航对象
	 * 
	 * @return 导航对象集合
	 */
	<R> List<R> selectNavigationBy2ForMappedObjectList(Class<R> mappedClass, NavigationDto selectNavigation);

	/**
	 * 分页:导航
	 * 
	 * @param mappedClass
	 *            返回类型
	 * 
	 * @param paginationNavigation
	 *            导航对象
	 * 
	 * @return 导航分页对象
	 */
	<R> PaginationDto<R> paginationNavigationBy1ForMappedObjectList(final Class<R> mappedClass,
			NavigationDto paginationNavigation);

	/**
	 * 分页
	 * 
	 * @param paginationNavigation
	 *            导航对象
	 * 
	 * @return 导航分页对象
	 */
	PaginationDto<Map<String, Object>> paginationNavigationBy1ForMapList(NavigationDto paginationNavigation);

	/**
	 * 插入:导航日志
	 * 
	 * @param insertNavigationLo
	 *            导航日志对象
	 * 
	 * @param insertProperties
	 *            插入属性名集合
	 * 
	 * @return 影响行数
	 */
	int insertNavigationLoBy1(NavigationLoDto insertNavigationLo, String... insertProperties);

	/**
	 * 删除:导航日志
	 * 
	 * @param deleteNavigationLo
	 *            导航日志对象
	 * 
	 * @param whereEqProperties
	 *            条件为等于的属性名集合
	 * 
	 * @return 影响行数
	 */
	int deleteNavigationLoBy1(NavigationLoDto deleteNavigationLo, String... whereEqProperties);

	/**
	 * 更新:导航日志
	 * 
	 * @param updateNavigationLo
	 *            导航日志对象
	 * 
	 * @param updateProperties
	 *            更新的属性名集合
	 * 
	 * @param whereEqProperties
	 *            条件为等于的属性名集合
	 * 
	 * @return 影响行数
	 */
	int updateNavigationLoBy1(NavigationLoDto updateNavigationLo, String[] updateProperties,
			String... whereEqProperties);

	/**
	 * 查询:导航日志
	 * 
	 * @param requiredType
	 *            返回类型
	 * 
	 * @param selectNavigationLo
	 *            导航日志对象
	 * 
	 * @param objectId
	 *            返回对象标识
	 * 
	 * @param whereEqProperties
	 *            条件为等于的属性名集合
	 * 
	 * @return 返回对象
	 */
	<R> R selectNavigationLoBy1ForObject(Class<R> requiredType, NavigationLoDto selectNavigationLo, String objectId,
			String... whereEqProperties);

	/**
	 * 查询:导航日志
	 * 
	 * @param requiredType
	 *            返回类型
	 * 
	 * @param selectNavigationLo
	 *            导航日志对象
	 * 
	 * @param objectId
	 *            返回对象标识
	 * 
	 * @param whereEqProperties
	 *            条件为等于的属性名集合
	 * 
	 * @return 导航日志对象集合
	 */
	<R> List<R> selectNavigationLoBy1ForObjectList(Class<R> requiredType, NavigationLoDto selectNavigationLo,
			String objectId, String... whereEqProperties);

	/**
	 * 查询:导航日志
	 * 
	 * @param mappedClass
	 *            返回类型
	 * 
	 * @param selectNavigationLo
	 *            导航日志对象
	 * 
	 * @param selectProperties
	 *            查询的属性名集合
	 * 
	 * @param whereEqProperties
	 *            条件为等于的属性名集合
	 * 
	 * @return 返回对象
	 */
	<R> R selectNavigationLoBy1ForMappedObject(Class<R> mappedClass, NavigationLoDto selectNavigationLo,
			String[] selectProperties, String... whereEqProperties);

	/**
	 * 查询:导航日志
	 * 
	 * @param mappedClass
	 *            返回类型
	 * 
	 * @param selectNavigationLo
	 *            导航日志对象
	 * 
	 * @param selectProperties
	 *            查询的属性名集合
	 * 
	 * @param whereEqProperties
	 *            条件为等于的属性名集合
	 * 
	 * @return 导航日志对象集合
	 */
	<R> List<R> selectNavigationLoBy1ForMappedObjectList(Class<R> mappedClass, NavigationLoDto selectNavigationLo,
			String[] selectProperties, String... whereEqProperties);

	/**
	 * 插入:导航与语言
	 * 
	 * @param insertNavigationLa
	 *            导航与语言对象
	 * 
	 * @param insertProperties
	 *            插入属性名集合
	 * 
	 * @return 影响行数
	 */
	int insertNavigationLaBy1(NavigationLaDto insertNavigationLa, String... insertProperties);

	/**
	 * 插入:导航与语言
	 * 
	 * @param insertNavigationLa
	 *            导航与语言对象
	 * 
	 * @return 影响行数
	 */
	int insertNavigationLaBy1_1(NavigationLaDto insertNavigationLa);

	/**
	 * 插入:导航与语言
	 * 
	 * @param insertNavigationLa
	 *            导航与语言对象
	 * 
	 * @return 影响行数
	 */
	int insertNavigationLaBy2(NavigationLaDto insertNavigationLa);

	/**
	 * 删除:导航与语言
	 * 
	 * @param deleteNavigationLa
	 *            导航与语言对象
	 * 
	 * @param whereEqProperties
	 *            条件为等于的属性名集合
	 * 
	 * @return 影响行数
	 */
	int deleteNavigationLaBy1(NavigationLaDto deleteNavigationLa, String... whereEqProperties);

	/**
	 * 删除:导航与语言
	 * 
	 * @param deleteNavigationLa
	 *            导航与语言对象
	 * 
	 * @return 影响行数
	 */
	int deleteNavigationLaBy1_1(NavigationLaDto deleteNavigationLa);

	/**
	 * 删除:导航与语言
	 * 
	 * @param deleteNavigationLa
	 *            导航与语言对象
	 * 
	 * @return 影响行数
	 */
	int deleteNavigationLaBy2(NavigationLaDto deleteNavigationLa);

	/**
	 * 更新:导航与语言
	 * 
	 * @param updateNavigationLa
	 *            导航与语言对象
	 * 
	 * @param updateProperties
	 *            更新的属性名集合
	 * 
	 * @param whereEqProperties
	 *            条件为等于的属性名集合
	 * 
	 * @return 影响行数
	 */
	int updateNavigationLaBy1(NavigationLaDto updateNavigationLa, String[] updateProperties,
			String... whereEqProperties);

	/**
	 * 更新:导航与语言
	 * 
	 * @param updateNavigationLa
	 *            导航与语言对象
	 * 
	 * @return 影响行数
	 */
	int updateNavigationLaBy1_1(NavigationLaDto updateNavigationLa);

	/**
	 * 更新:导航与语言
	 * 
	 * @param updateNavigationLa
	 *            导航与语言对象
	 * 
	 * @return 影响行数
	 */
	int updateNavigationLaBy2(NavigationLaDto updateNavigationLa);

	/**
	 * 查询:导航与语言
	 * 
	 * @param requiredType
	 *            返回类型
	 * 
	 * @param selectNavigationLa
	 *            导航与语言对象
	 * 
	 * @param objectId
	 *            返回对象标识
	 * 
	 * @param whereEqProperties
	 *            条件为等于的属性名集合
	 * 
	 * @return 返回对象
	 */
	<R> R selectNavigationLaBy1ForObject(Class<R> requiredType, NavigationLaDto selectNavigationLa, String objectId,
			String... whereEqProperties);

	/**
	 * 查询:导航与语言
	 * 
	 * @param requiredType
	 *            返回类型
	 * 
	 * @param selectNavigationLa
	 *            导航与语言对象
	 * 
	 * @param objectId
	 *            返回对象标识
	 * 
	 * @return 返回对象
	 */
	<R> R selectNavigationLaBy1_1ForObject(Class<R> requiredType, NavigationLaDto selectNavigationLa, String objectId);

	/**
	 * 查询:导航与语言
	 * 
	 * @param requiredType
	 *            返回类型
	 * 
	 * @param selectNavigationLa
	 *            导航与语言对象
	 * 
	 * @param objectId
	 *            返回对象标识
	 * 
	 * @return 返回对象
	 */
	<R> R selectNavigationLaBy2ForObject(Class<R> requiredType, NavigationLaDto selectNavigationLa, String objectId);

	/**
	 * 查询:导航与语言
	 * 
	 * @param requiredType
	 *            返回类型
	 * 
	 * @param selectNavigationLa
	 *            导航与语言对象
	 * 
	 * @param objectId
	 *            返回对象标识
	 * 
	 * @param whereEqProperties
	 *            条件为等于的属性名集合
	 * 
	 * @return 导航与语言对象集合
	 */
	<R> List<R> selectNavigationLaBy1ForObjectList(Class<R> requiredType, NavigationLaDto selectNavigationLa,
			String objectId, String... whereEqProperties);

	/**
	 * 查询:导航与语言
	 * 
	 * @param requiredType
	 *            返回类型
	 * 
	 * @param selectNavigationLa
	 *            导航与语言对象
	 * 
	 * @param objectId
	 *            返回对象标识
	 * 
	 * @return 导航与语言对象集合
	 */
	<R> List<R> selectNavigationLaBy1_1ForObjectList(Class<R> requiredType, NavigationLaDto selectNavigationLa,
			String objectId);

	/**
	 * 查询:导航与语言
	 * 
	 * @param requiredType
	 *            返回类型
	 * 
	 * @param selectNavigationLa
	 *            导航与语言对象
	 * 
	 * @param objectId
	 *            返回对象标识
	 * 
	 * @return 导航与语言对象集合
	 */
	<R> List<R> selectNavigationLaBy2ForObjectList(Class<R> requiredType, NavigationLaDto selectNavigationLa,
			String objectId);

	/**
	 * 查询:导航与语言
	 * 
	 * @param mappedClass
	 *            返回类型
	 * 
	 * @param selectNavigationLa
	 *            导航与语言对象
	 * 
	 * @param selectProperties
	 *            查询的属性名集合
	 * 
	 * @param whereEqProperties
	 *            条件为等于的属性名集合
	 * 
	 * @return 返回对象
	 */
	<R> R selectNavigationLaBy1ForMappedObject(Class<R> mappedClass, NavigationLaDto selectNavigationLa,
			String[] selectProperties, String... whereEqProperties);

	/**
	 * 查询:导航与语言
	 * 
	 * @param mappedClass
	 *            返回类型
	 * 
	 * @param selectNavigationLa
	 *            导航与语言对象
	 * 
	 * @return 返回对象
	 */
	<R> R selectNavigationLaBy1_1ForMappedObject(Class<R> mappedClass, NavigationLaDto selectNavigationLa);

	/**
	 * 查询:导航与语言
	 * 
	 * @param mappedClass
	 *            返回类型
	 * 
	 * @param selectNavigationLa
	 *            导航与语言对象
	 * 
	 * @return 返回对象
	 */
	<R> R selectNavigationLaBy2ForMappedObject(Class<R> mappedClass, NavigationLaDto selectNavigationLa);

	/**
	 * 查询:导航与语言
	 * 
	 * @param mappedClass
	 *            返回类型
	 * 
	 * @param selectNavigationLa
	 *            导航与语言对象
	 * 
	 * @param selectProperties
	 *            查询的属性名集合
	 * 
	 * @param whereEqProperties
	 *            条件为等于的属性名集合
	 * 
	 * @return 导航与语言对象集合
	 */
	<R> List<R> selectNavigationLaBy1ForMappedObjectList(Class<R> mappedClass, NavigationLaDto selectNavigationLa,
			String[] selectProperties, String... whereEqProperties);

	/**
	 * 查询:导航与语言
	 * 
	 * @param mappedClass
	 *            返回类型
	 * 
	 * @param selectNavigationLa
	 *            导航与语言对象
	 * 
	 * @return 导航与语言对象集合
	 */
	<R> List<R> selectNavigationLaBy1_1ForMappedObjectList(Class<R> mappedClass, NavigationLaDto selectNavigationLa);

	/**
	 * 查询:导航与语言
	 * 
	 * @param mappedClass
	 *            返回类型
	 * 
	 * @param selectNavigationLa
	 *            导航与语言对象
	 * 
	 * @return 导航与语言对象集合
	 */
	<R> List<R> selectNavigationLaBy2ForMappedObjectList(Class<R> mappedClass, NavigationLaDto selectNavigationLa);

	/**
	 * 分页:导航与语言
	 * 
	 * @param mappedClass
	 *            返回类型
	 * 
	 * @param paginationNavigationLa
	 *            导航与语言对象
	 * 
	 * @return 导航与语言分页对象
	 */
	<R> PaginationDto<R> paginationNavigationLaBy1ForMappedObjectList(final Class<R> mappedClass,
			NavigationLaDto paginationNavigationLa);

	/**
	 * 分页
	 * 
	 * @param paginationNavigationLa
	 *            导航与语言对象
	 * 
	 * @return 导航与语言分页对象
	 */
	PaginationDto<Map<String, Object>> paginationNavigationLaBy1ForMapList(NavigationLaDto paginationNavigationLa);

	/**
	 * 插入:导航与语言日志
	 * 
	 * @param insertNavigationLaLo
	 *            导航与语言日志对象
	 * 
	 * @param insertProperties
	 *            插入属性名集合
	 * 
	 * @return 影响行数
	 */
	int insertNavigationLaLoBy1(NavigationLaLoDto insertNavigationLaLo, String... insertProperties);

	/**
	 * 删除:导航与语言日志
	 * 
	 * @param deleteNavigationLaLo
	 *            导航与语言日志对象
	 * 
	 * @param whereEqProperties
	 *            条件为等于的属性名集合
	 * 
	 * @return 影响行数
	 */
	int deleteNavigationLaLoBy1(NavigationLaLoDto deleteNavigationLaLo, String... whereEqProperties);

	/**
	 * 更新:导航与语言日志
	 * 
	 * @param updateNavigationLaLo
	 *            导航与语言日志对象
	 * 
	 * @param updateProperties
	 *            更新的属性名集合
	 * 
	 * @param whereEqProperties
	 *            条件为等于的属性名集合
	 * 
	 * @return 影响行数
	 */
	int updateNavigationLaLoBy1(NavigationLaLoDto updateNavigationLaLo, String[] updateProperties,
			String... whereEqProperties);

	/**
	 * 查询:导航与语言日志
	 * 
	 * @param requiredType
	 *            返回类型
	 * 
	 * @param selectNavigationLaLo
	 *            导航与语言日志对象
	 * 
	 * @param objectId
	 *            返回对象标识
	 * 
	 * @param whereEqProperties
	 *            条件为等于的属性名集合
	 * 
	 * @return 返回对象
	 */
	<R> R selectNavigationLaLoBy1ForObject(Class<R> requiredType, NavigationLaLoDto selectNavigationLaLo,
			String objectId, String... whereEqProperties);

	/**
	 * 查询:导航与语言日志
	 * 
	 * @param requiredType
	 *            返回类型
	 * 
	 * @param selectNavigationLaLo
	 *            导航与语言日志对象
	 * 
	 * @param objectId
	 *            返回对象标识
	 * 
	 * @param whereEqProperties
	 *            条件为等于的属性名集合
	 * 
	 * @return 导航与语言日志对象集合
	 */
	<R> List<R> selectNavigationLaLoBy1ForObjectList(Class<R> requiredType, NavigationLaLoDto selectNavigationLaLo,
			String objectId, String... whereEqProperties);

	/**
	 * 查询:导航与语言日志
	 * 
	 * @param mappedClass
	 *            返回类型
	 * 
	 * @param selectNavigationLaLo
	 *            导航与语言日志对象
	 * 
	 * @param selectProperties
	 *            查询的属性名集合
	 * 
	 * @param whereEqProperties
	 *            条件为等于的属性名集合
	 * 
	 * @return 返回对象
	 */
	<R> R selectNavigationLaLoBy1ForMappedObject(Class<R> mappedClass, NavigationLaLoDto selectNavigationLaLo,
			String[] selectProperties, String... whereEqProperties);

	/**
	 * 查询:导航与语言日志
	 * 
	 * @param mappedClass
	 *            返回类型
	 * 
	 * @param selectNavigationLaLo
	 *            导航与语言日志对象
	 * 
	 * @param selectProperties
	 *            查询的属性名集合
	 * 
	 * @param whereEqProperties
	 *            条件为等于的属性名集合
	 * 
	 * @return 导航与语言日志对象集合
	 */
	<R> List<R> selectNavigationLaLoBy1ForMappedObjectList(Class<R> mappedClass,
			NavigationLaLoDto selectNavigationLaLo, String[] selectProperties, String... whereEqProperties);
}